home *** CD-ROM | disk | FTP | other *** search
/ Programmer Power Tools / Programmer Power Tools.iso / modem / wxmodem.arc / WXMODIAL.INC < prev    next >
Text File  |  1986-11-01  |  7KB  |  237 lines

  1. {$U-,C-,R-,K-}
  2. Var
  3.   cmfile      : text;
  4.   cmdfname    : bigstring;
  5.  
  6. procedure setup;
  7. {initialize most stuff -
  8.  
  9.  Command Line:  WXMODEM filename [w/c/x] [pcjr] [test]
  10.  
  11.         filename -      name of control file
  12.         [w/c/x]  -      default is w
  13.                         w - windowed xmodem
  14.                         c - crc xmodem
  15.                         x - checksum xmodem
  16.         [pcjr]   -      if present, xoff pause during disk i/o on receive
  17.  
  18.         [test]   -      if present, no user messages are sent through com port
  19.  
  20.  Control file:
  21.  
  22.   [s/r] filename [p] [baud] [parity] [display] [color]
  23.  
  24. }
  25. Var
  26.   n, j, k, l  : integer;
  27.   result      : integer;
  28.   paramstring : bigstring;
  29.   cspeed      : bigstring;
  30.   parity_str  : bigstring;
  31.   com_str     : bigstring;
  32. Label
  33.   99;
  34. begin
  35.      exitfl := true;                     {assume an error}
  36.      n := ParamCount;                    { Parameter count }
  37.      if n < 1 then                       { Must be atleast one parm }
  38.      begin
  39.          writeln('WXMODEM - No filename present on command line!');
  40.          goto 99;
  41.      end;
  42.                                          { Process parms }
  43.      testfl := false;
  44.      xmotype := 'W';
  45.      cmdfname  := ParamStr(1);           { command filename }
  46.      if n > 1 then
  47.      begin
  48.          for i := 2 to n do
  49.          begin
  50.              paramstring := ParamStr(i);
  51.              if (length(paramstring) = 1) and (i = 2) then
  52.              begin
  53.                  case UpCase(paramstring[1]) of
  54.                     'W' : xmotype := 'W';
  55.                     'C' : xmotype := 'C';
  56.                     'X' : xmotype := 'X';
  57.                     else begin
  58.                             writeln('WXMODEM - Xmodem type must be W/C/X');
  59.                             goto 99;
  60.                          end;
  61.                  end;         { of case }
  62.              end
  63.              else
  64.              begin            {either length > or i > 2}
  65.                  for j := 1 to length(paramstring) do
  66.                      paramstring[j] := UpCase(paramstring[j]);
  67.                  if paramstring = 'PCJR'   then pcjrmode := true;
  68.                  if paramstring = 'NOPCJR' then pcjrmode := false;
  69.                  if paramstring = 'TEST' then
  70.                  begin
  71.                      writeln('Test mode!!!!');
  72.                      testfl := true;
  73.                  end;
  74.              end;
  75.          end;                  { of for loop}
  76.      end;
  77.      if exists(cmdfname) then
  78.      begin
  79.  
  80.         Assign(cmfile,cmdfname);
  81.         {I-} Reset(cmfile); {I+}
  82.         If IOresult <> 0 then
  83.         begin
  84.            writeln('WXMODEM - Unable to open command file');
  85.            goto 99;
  86.         end;
  87.         read(cmfile,paramstring);     {get the stuff}
  88.         i := 1;                       {string pointer}
  89.         while (i <= length(paramstring)) and
  90.               (paramstring[i] = ' ') do
  91.                i := i + 1;
  92.         case upcase(paramstring[i]) of
  93.             'S'  : transmit := true;
  94.             'R'  : transmit := false;
  95.            else
  96.            begin
  97.               writeln('WXMODEM - Expecting S/R');
  98.               goto 99;
  99.            end;
  100.         end;
  101.         i := i + 1;
  102.         while (i <= length(paramstring)) and
  103.               (paramstring[i] = ' ') do
  104.                i := i + 1;
  105.         j := i;
  106.         while (j <= length(paramstring)) and
  107.               (paramstring[j] <> ' ') do
  108.                j := j + 1;
  109.         if j <= i then
  110.         begin
  111.             writeln('WXMODEM - xmodem filename missing');
  112.             goto 99;
  113.         end;
  114.         k := j - i;
  115.         for l := 1 to k do
  116.         begin
  117.             xmofile[l] := paramstring[i];
  118.             i := i + 1;
  119.         end;
  120.         xmofile[0] := chr(k);
  121.         i := j;
  122.         while (i <= length(paramstring)) and
  123.               (paramstring[i] = ' ') do
  124.                i := i + 1;
  125.         j := i;
  126.         while (j <= length(paramstring)) and
  127.               (paramstring[j] <> ' ') do
  128.                j := j + 1;
  129.         if j <= i then
  130.         begin
  131.             writeln('WXMODEM - COM Port parameter missing',j:4,i:4);
  132.             goto 99;
  133.         end;
  134.         k := j - i;
  135.         for l := 1 to k do
  136.         begin
  137.             com_str[l] := paramstring[i];
  138.             i := i + 1;
  139.         end;
  140.         com_str[0] := chr(k);
  141.         if (com_str = 'COM1') or (com_str = 'COM2')  then
  142.         begin
  143.            case com_str[4] of
  144.              '1' :  Cport := com1;
  145.              '2' :  Cport := com2;
  146.               else
  147.               begin
  148.                  writeln('WXMODEM - COM'+com_str+' not supported, only COM1/COM2');
  149.                  goto 99;
  150.               end;
  151.            end;     {of case}
  152.         end
  153.         else
  154.         begin
  155.            writeln('WXMODEM - Unable to decifer COM port');
  156.            goto 99;
  157.         end;
  158.         speed := 1200;
  159.         i := j;
  160.         while (i <= length(paramstring)) and
  161.               (paramstring[i] = ' ') do
  162.                i := i + 1;
  163.         j := i;
  164.         while (j <= length(paramstring)) and
  165.               (paramstring[j] <> ' ') do
  166.              j := j + 1;
  167.         if j > i then
  168.         begin
  169.             for k := 1 to j - i do
  170.             begin
  171.                if (paramstring[i] >= '0') and (paramstring[i] <= '9') then
  172.                   cspeed[k] := paramstring[i];
  173.                i := i + 1;
  174.             end;
  175.             cspeed[0] := chr(k);
  176.             val(cspeed,speed,result);
  177.             if result <> 0 then
  178.             begin
  179.                writeln('WXMODEM - Speed not recognized');
  180.                speed := 1200;
  181.             end;
  182.         end;
  183.         i := j;
  184.         while (i <= length(paramstring)) and
  185.               (paramstring[i] = ' ') do
  186.                i := i + 1;
  187.         j := i;
  188.         while (j <= length(paramstring)) and
  189.               (paramstring[j] <> ' ') do
  190.                j := j + 1;
  191.         if j <= i then
  192.         begin
  193.             writeln('WXMODEM - parity missing from file');
  194.             goto 99;
  195.         end;
  196.         case upcase(paramstring[i]) of
  197.            'E'  : begin
  198.                       parity := even;
  199.                       dbits  := 7;
  200.                   end;
  201.            'N'  : begin
  202.                       parity := none;
  203.                       dbits  := 8;
  204.                   end;
  205.            else
  206.            begin
  207.                writeln('WXMODEM - Parity must be Even or None');
  208.                goto 99;
  209.            end;
  210.         end;
  211.         stop_bits := 1;   {that's the only choice!}
  212.         i := i + 1;
  213.         while (i <= length(paramstring)) and
  214.               (paramstring[i] = ' ') do
  215.                i := i + 1;
  216.         if paramstring[i] = '0' then
  217.             displayfl := false
  218.         else
  219.         if paramstring[i] = '1' then
  220.             displayfl := true;
  221.         exitfl := false;     {good }
  222.      end
  223.      else
  224.      begin
  225.         writeln('WXMODEM - command file does not exist');
  226.      end;
  227. 99:
  228.      close(cmfile);
  229.      if exitfl = true then
  230.      begin
  231.         writeln(paramstring);
  232.         delay(10000);
  233.         displayfl := false;
  234.      end;
  235.   end;
  236.  
  237.